Non-volatile data storage devices, such as universal serial bus (USB) flash memory devices or removable storage cards, have allowed for increased portability of data and software applications. Flash memory devices can enhance data storage density by storing multiple bits in each flash memory cell. For example, Multi-Level Cell (MLC) flash memory devices provide increased storage density by storing 3 bits per cell, 4 bits per cell, or more. Although increasing the number of bits per cell and reducing device feature dimensions may increase a storage density of a memory device, a bit error rate of data stored at the memory device may also increase.
Error correction coding (ECC) is often used to correct errors that occur in data read from a memory device. Prior to storage, data may be encoded by an ECC encoder to generate redundant information (e.g. “parity bits”) that may be stored with the data as an ECC codeword. As more parity bits are used, an error correction capacity of the ECC increases and a number of bits required to store the encoded data also increases.
Flash memory devices may be sensitive to repeated patterns stored in a flash block (i.e., a portion of a flash memory). A scrambler is often used to modify a data pattern stored in the flash block to reduce pattern sensitivity. The scrambler may use a scramble key and apply a logical operation, such as an exclusive OR (XOR), to the data pattern to modify the data pattern.
Descrambling of data may depend on accurate retrieval of the scramble key from the flash block. Although the scramble key may be protected by the ECC parity bits, performing de-scrambling after ECC decoding may increase a delay in reading data from the flash memory device.